package test.test_6_29;
/*
 学生和老师都有共同的属性: name、gender、age
 共同的行为：eat() sleep()
     注：虽然行为一致，但实现会不同。
 现在为了提升自身素质，大家都需要额外进行技能的学习：学生需要增强实践动手能力，老师需要增强语言能力。
 请定义抽象类和接口，描述以上体系。
 然后用以下方式进行测试：
     1，用不同的父类指向不同的子类对象，理解方法调用时“编译时看左边”
     2，用这些引用调用方法，理解方法调用时“运行时看右边”
 */
public class Demo03 {
    public static void main(String[] args) {
        Person p = new Student();
        p.setAge(20);
        p.setGender("chinese");
        p.setName("wzx");
        p.eat();
        p.sleep();
        System.out.println("-----------------------");
        Person p1 = new Teacher();
        p1.setName("zzz");
        p1.setGender("English");
        p1.setAge(25);
        p1.eat();
        p1.sleep();


    }
}

interface behaviour {

    void eat();
    void sleep();

}
abstract class Person implements behaviour {
    String name;
    String gender;
    int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Person(String name, String gender, int age) {
        this.name = name;
        this.gender = gender;
        this.age = age;
    }

    public Person() {
    }

    @Override
    public void eat() {
    }

    @Override
    public void sleep() {
    }
}
class Student extends Person {

    @Override
    public void eat() {
        System.out.println("学生吃饭");
    }

    @Override
    public void sleep() {
        System.out.println("学生睡觉");
    }

    public void practice() {
        System.out.println("学生要有实践动手的能力");
    }

    public Student() {
        super();
    }

    public Student(String name, String gender, int age) {
        super(name, gender, age);
    }
}
class Teacher extends Person {

    public Teacher() {
        super();
    }

    public Teacher(String name, String gender, int age) {
        super(name, gender, age);
    }

    @Override
    public void eat() {
        System.out.println("老师吃饭");
    }

    @Override
    public void sleep() {
        System.out.println("老师睡觉");
    }


}

